home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 24 / Amiga Format AFCD24 (Feb 1998, Issue 108).iso / -in_the_mag- / emulation / amiga / uae-0.7.0b2 / src / md-generic / m68k.h next >
C/C++ Source or Header  |  1998-01-20  |  1KB  |  50 lines

  1.  /* 
  2.   * UAE - The Un*x Amiga Emulator
  3.   * 
  4.   * MC68000 emulation - machine dependent bits
  5.   *
  6.   * Copyright 1996 Bernd Schmidt
  7.   */
  8.  
  9.  
  10. struct flag_struct {
  11.     unsigned int c;
  12.     unsigned int z;
  13.     unsigned int n;
  14.     unsigned int v; 
  15.     unsigned int x;
  16. };
  17.  
  18. extern struct flag_struct regflags;
  19.  
  20. #define ZFLG (regflags.z)
  21. #define NFLG (regflags.n)
  22. #define CFLG (regflags.c)
  23. #define VFLG (regflags.v)
  24. #define XFLG (regflags.x)
  25.  
  26. static __inline__ int cctrue(const int cc)
  27. {
  28.     switch(cc){
  29.      case 0: return 1;                       /* T */
  30.      case 1: return 0;                       /* F */
  31.      case 2: return !CFLG && !ZFLG;          /* HI */
  32.      case 3: return CFLG || ZFLG;            /* LS */
  33.      case 4: return !CFLG;                   /* CC */
  34.      case 5: return CFLG;                    /* CS */
  35.      case 6: return !ZFLG;                   /* NE */
  36.      case 7: return ZFLG;                    /* EQ */
  37.      case 8: return !VFLG;                   /* VC */
  38.      case 9: return VFLG;                    /* VS */
  39.      case 10:return !NFLG;                   /* PL */
  40.      case 11:return NFLG;                    /* MI */
  41.      case 12:return NFLG == VFLG;            /* GE */
  42.      case 13:return NFLG != VFLG;            /* LT */
  43.      case 14:return !ZFLG && (NFLG == VFLG); /* GT */
  44.      case 15:return ZFLG || (NFLG != VFLG);  /* LE */
  45.     }
  46.     abort();
  47.     return 0;
  48. }
  49.  
  50.